package log

import (
	"certificate-manager/pkg/constant"
	"time"

	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
)

var Logger *zap.Logger

func customTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
	enc.AppendString(t.Local().Format(constant.TimeFormat))
}

// Setup init logger
func Setup() {
	cfg := zap.NewProductionConfig()
	cfg.EncoderConfig.EncodeTime = customTimeEncoder
	Logger, _ = cfg.Build()
	// zap底层有缓冲。Sync() 方法通常用于确保在程序退出或在某个时间点之前，日志消息被完全刷新和记录。它将任何挂起的日志消息写入到日志文件或目标（如控制台）中。
	defer Logger.Sync()
}
